/**
 * user dao
 */
const mysql = require("../utils/mysqlUtil.js");
const User = require("../model/user");

exports.getUserByName = async (username, password) => {
    // 使用sql封装的工具方法进行数据库查询
    let _sql = "select * from user where username=? and password=?";
    let userData = await ctx.mysqlUtil.execSQL(_sql, username, password)

    // 使用orm框架方法进行数据库查询
    // let userData = await db.query(_sql, [username, password])

    // let _sql = "select * from user where username=? and password=?";
    // let userData = await db.query(_sql, [username, password])
    return userData;
}

exports.findByName = async (username) => {
    return User.findOne({ where: { username: username } })
}

exports.findById = async (id) => {
    return User.findOne({ where: { id: id } })
}

exports.findAll = async (options) => {
    return User.findAll({ where: options })
}

exports.create = async (options) => {
    return User.create(options)
}

exports.update = async (options) => {
    console.log("options",options)
    return User.update(options, { where: { id: options.id } })
}

exports.del = async (options) => {
    return User.destroy({ where: options })
}

/**
 * DAO和ORM概念：
 * 1.所谓DAO层一般是从系统分层结构出发来说的，即把数据库存取操作集中到DAO层，以便于维护和逻辑清晰。
 * 而且通常移植数据库的时候，如果系统合理分层了，则大部分工资将会集中在DAO层，这样比较容易操作
 * 2.ORM是针对开发而言的，就像面向过程和面向对象开发一样，是一种处理问题的方式。ORM的目的是使
 * 数据库操作能像操作对象那样方便，通常ORM会做到将数据库表映射成对象，封装一些基本的数据操作，
 * 以及提供一些级联查询和保存之类帮助开发的扩展功能
 * DAO层在实现上可以选择使用ORM框架，也可以使用直接的数据库操作，有时候因为性能要求只能直接操作数据
 * 所以，DAO层是软件开发演变过程中对于分层概念的产物，目的是更清晰合理的管理软件开发过程的代码和逻辑；
 * 而ORM是针对数据操作思想的一种改变，不再是面对关系数据库中的表，而是统一视作对象。
 */